Enviado em 16/06/2010 - 16:11h
Olá, eu queria pedir ajuda dos programadores mais experientes com um exercício de C.#include <stdio.h>
#include <stdlib.h>
#include <string.h> // a função strupr necessita desta biblioteca
// declarando os registros
struct{
char sexo[1], corOlhos[1];
float altura;
int idade;
} pessoas[2];
int main(){
// declarando as variáveis
int i, k, maiorIdade, qtdMulheres, qtdHomens;
float somaIdades;
char handler[1];
// inserindo os dados no registro
for(i=0;i<2;i++){
printf("\nQual o sexo da %da. pessoa? M/F \n", i+1);
scanf("%s", handler);
// Este loop converte o que handler recebe para maiúsculo.
for(k=0;handler[k]!=''; k++){
handler[k] = toupper(handler[k]);
}
// Fazendo a verificação do que a variável handler recebeu. Se passar na verificação, a variável pessoas[i].sexo recebe o valor de handler.
// Se não passar na verificação, exibe mensagem e retorna ao início do loop
if((strcmp(handler,"M")== 0) || (strcmp(handler, "F")==0)){
for(k=0;handler[k]!=''; k++)
pessoas[i].sexo[k] = handler[k];
} else {
printf("\nSexo inválido, digite apenas M ou F !");
i--;
continue;
}
printf("\nDigite a altura: ");
scanf("%f", &pessoas[i].altura);
printf("\nDigite a idade: ");
scanf("%d", &pessoas[i].idade);
printf("\nQual a cor dos olhos? C(castanhos)/A(azuis)/V(verdes) : ");
scanf("%s", handler);
// Passando o que foi digitado para cor dos olhos para MAIÚSCULO e fazendo a verificação do que foi digitado.
for(k=0; handler[k]!=''; k++)
handler[k] = toupper(handler[k]);
// Verificando se o valor digitado para cor dos olhos é igual a C, A ou V
if((strcmp(handler,"C")==0) || (strcmp(handler,"A")==0) || (strcmp(handler,"V")==0)) {
for(k=0;handler[k]!=''; k++)
pessoas[i].corOlhos[k] = handler[k];
} else {
printf("\n\nA cor dos olhos digitada é inválida! Utilize: C(castanhos), A(azuis) ou V(verdes!\n");
i--;
continue;
}
}
// verificando o registro
somaIdades = 0;
maiorIdade = 0;
for(i=1;i<2;i++){
// soma a idade das pessoas de olhos castanhos e altura superior a 1,60 m
// IMPORTANTE : para fazer a comparação entre 2 STRING's utiliza-se o comando STRCMP( string1, string2) => retorna ZERO se forem iguais
if((strcmp(pessoas[i].corOlhos,"C")==0) && (pessoas[i].altura>1.60)) {
somaIdades += pessoas[i].idade;
}
// verifica qual a maior idade entre as pessoas cadastradas no registro
if(pessoas[i].idade> pessoas[maiorIdade].idade)
maiorIdade = i;
}
qtdMulheres = 0;
qtdHomens = 0;
// é nesta parte aqui embaixo que estou com problemas V
for(i=0;i<2;i++){
// verifica a quantidade de mulheres com idade entre 20 e 45 anos(inclusive). Se a verificação anterior retornar 0(zero), verifica a quantidade de mulheres de olhos verdes e altura //inferior a 1.70 m e salva essa quantidade em uma variável
if(strcmp(pessoas[i].sexo,"F")==0){
// #rofl, essa verificação aqui tá pequena hein :P
if((pessoas[i].idade>20) && (pessoas[i].idade<=45))
qtdMulheres++;
if((strcmp(pessoas[i].corOlhos,"V")==0) && (pessoas[i].altura<1.70))
qtdMulheres++;
}
// calcula a quantidade de homens existentes no cadastro
if(strcmp(pessoas[i].sexo,"M")==0)
qtdHomens++;
}
// exibindo os resultados das verificações
printf("\nA media das idades de pessoas de olhos castanhos e altura superior a 1.60 m é : %3.2f", somaIdades/2);
printf("\nA maior idade das pessoas cadastradas é : %d", pessoas[maiorIdade].idade);
printf("\nA quantidade de mulheres de idade entre 20 e 45 anos(inclusive) ou que tenham olhos verdes e altura inferior a 1.70 m é : %d", qtdMulheres);
printf("\nA quantidade de homens é: %d\n", qtdHomens);
return 0;
}
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Atualizar Debian Online de uma Versão para outra
Dica para encontrar diversos jogos Indies criativos
Instalando Discord no Debian 13
Instalar driver Nvidia no Debian 13
Redimensionando, espelhando, convertendo e rotacionando imagens com script
Instalar Linux e grub em hd ssd externo [RESOLVIDO] (5)
Software livre - será que eu estou tão errado assim? (14)